home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / X11R4 / cmds / X / ddx / sprite.X11R3 / hdr / gp1cmds.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-11-03  |  10.6 KB  |  342 lines

  1. /* @(#)gp1cmds.h 1.19 89/03/25 SMI */
  2.  
  3. /*
  4.  * Copyright 1986, 1987 by Sun Microsystems, Inc.
  5.  */
  6.  
  7. #ifndef    gp1cmds_DEFINED
  8. #define    gp1cmds_DEFINED
  9.  
  10. /* GP low level command set */
  11.  
  12. #define GP1_EOCL            (0 << 8)
  13. #define GP1_USE_CONTEXT            (1 << 8)
  14. #define GP1_PR_VEC            (2 << 8)
  15. #define GP1_PR_ROP_NF            (3 << 8)
  16. #define GP1_PR_ROP_FF            (4 << 8)
  17.  
  18. #define GP1_PR_PGON_SOL            (5 << 8)
  19. #define GP1_SET_ZBUF            (6 << 8)
  20. #define GP1_SET_HIDDEN_SURF        (7 << 8)
  21. #define GP1_SET_MAT_NUM            (8 << 8)
  22. #define GP1_MUL_POINT_FLT_2D        (9 << 8)
  23.  
  24. #define GP1_MUL_POINT_FLT_3D        (10 << 8)
  25. #define GP1_XF_PGON_FLT_3D        (11 << 8)
  26. #define GP1_XF_PGON_FLT_2D        (12 << 8)
  27.  
  28. #define GP1_SET_CLIP_LIST        (15 << 8)
  29. #define GP1_SET_FB_NUM            (16 << 8)
  30. #define GP1_SET_VWP_3D            (17 << 8)
  31. #define GP1_SET_VWP_2D            (18 << 8)
  32. #define GP1_SET_ROP            (19 << 8)
  33.  
  34. #define GP1_SET_CLIP_PLANES        (20 << 8)
  35. #define GP1_MUL_POINT_INT_2D        (21 << 8)
  36. #define GP1_MUL_POINT_INT_3D        (22 << 8)
  37. #define GP1_SET_FB_PLANES        (23 << 8)
  38. #define GP1_SET_MAT_3D            (24 << 8)
  39.  
  40. #define GP1_SET_MAT_OFFSET        (26 << 8)
  41. #define GP1_SET_COLOR            (28 << 8)
  42. #define GP1_SET_MAT_2D            (29 << 8)
  43.  
  44. #define GP1_XF_PGON_INT_3D        (30 << 8)
  45. #define GP1_COPY_MAT            (31 << 8)
  46. #define GP1_MUL_MAT_2D            (32 << 8)
  47. #define GP1_MUL_MAT_3D            (33 << 8)
  48. #define GP1_GET_MAT_2D            (34 << 8)
  49.  
  50. #define GP1_GET_MAT_3D            (35 << 8)
  51. #define GP1_PROC_LINE_FLT_3D        (36 << 8)
  52. #define GP1_PROC_PGON_FLT_3D        (37 << 8)
  53. #define GP1_PROC_PGON_FLT_2D        (38 << 8)
  54.  
  55. #define GP1_PR_LINE            (40 << 8)
  56. #define GP1_PR_POLYLINE            (41 << 8)
  57. #define GP1_SET_LINE_TEX        (42 << 8)
  58. #define GP1_SET_LINE_WIDTH        (43 << 8)
  59. #define GP1_CGI_LINE            (44 << 8)
  60.  
  61. #define GP1_XF_LINE_FLT_2D        (45 << 8)
  62. #define GP1_XF_LINE_FLT_3D        (46 << 8)
  63. #define GP1_XF_LINE_INT_3D        (47 << 8)
  64. #define GP1_PR_PGON_TEX            (48 << 8)
  65.  
  66. #define GP1_PR_ROP_TEX            (50 << 8)
  67. #define GP1_SET_PGON_TEX_BLK        (51 << 8)
  68. #define GP1_SET_PGON_TEX        (52 << 8)
  69. #define GP1_SET_PGON_TEX_ORG_SCR    (53 << 8)
  70. #define GP1_SET_PGON_TEX_ORG_XF_2D    (54 << 8)
  71.  
  72. #define GP1_SET_PGON_TEX_ORG_XF_3D    (55 << 8)
  73. #define GP1_XF_LINE_INT_2D        (57 << 8)
  74. #define GP1_XF_PGON_INT_2D        (58 << 8)
  75. #define GP1_PROC_PGON_INT_2D        (59 << 8)
  76.  
  77. #define GP1_PROC_LINE_FLT_2D        (60 << 8)
  78. #define GP1_PROC_LINE_INT_2D        (61 << 8)
  79. #define GP1_PROC_LINE_INT_3D        (62 << 8)
  80. #define GP1_PROC_PGON_INT_3D        (63 << 8)
  81. #define GP1_SET_PICK_ID            (64 << 8)
  82. #define GP1_SET_PICK_WINDOW        (65 << 8)
  83. #define GP1_GET_PICK            (66 << 8)
  84. #define GP1_SET_PICK            (67 << 8)
  85. #define GP1_CLEAR_PICK            (68 << 8)
  86.  
  87. #define GP1_XF_POINT_INT_2D        (69 << 8)
  88. #define GP1_XF_POINT_INT_3D        (70 << 8)
  89. #define GP1_XF_POINT_FLT_2D        (71 << 8)
  90. #define GP1_XF_POINT_FLT_3D        (72 << 8)
  91.  
  92. #define GP1_CLEAR_CONTEXT        (73 << 8)
  93. #define GP1_SET_DEPTH_CUE        (74 << 8)
  94. #define GP1_SET_DEPTH_CUE_COLORS        (75 << 8)
  95. #define GP2_SET_DEPTH_CUE_PARAMETERS    (76 << 8)
  96.  
  97. /* number of commands defined so far */
  98. #define    GP1_NCMDS            76
  99.  
  100. /*
  101.  * Commands that exist only on the GP2 start here.
  102.  * (Leave a little gap for gp1 expansion.)
  103.  */
  104.  
  105. #define GP2_SET_RGB_COLOR               (80 << 8)
  106. #define GP2_PROC_PGON_FLT_3D_RGB        (81 << 8)
  107. #define GP2_PROC_PGON_INT_3D_RGB        (82 << 8)
  108. #define GP2_XF_PGON_FLT_3D_RGB          (83 << 8)
  109. #define GP2_XF_PGON_INT_3D_RGB          (84 << 8)
  110. #define GP2_SET_LIGHT                   (85 << 8)
  111. #define GP2_SET_LIGHT_MATRIX            (86 << 8)
  112. #define GP2_SET_REFLECTANCE             (87 << 8)
  113.  
  114. #define GP2_SET_TRANSPARENCY        (89 << 8)
  115. #define GP2_SET_DITHER            (90 << 8)
  116. #define GP2_SET_LIGHT_OPTIONS           (91 << 8)
  117.  
  118. #define GP2_XF_SHADE_LINE_FLT_3D        (99 << 8)
  119.  
  120. #define GP2_XF_RECT_INT_2D              (100 << 8)
  121. #define GP2_XF_RECT_FLT_2D              (101 << 8)
  122. #define GP2_SET_TEXT_TYPE               (102 << 8)
  123. #define GP2_SET_TEXT_PRECISION          (103 << 8)
  124. #define GP2_SET_TEXT_PATH               (104 << 8)
  125. #define GP2_SET_FONT                    (105 << 8)
  126. #define GP2_SET_TEXT_EXPANSION          (106 << 8)
  127. #define GP2_SET_TEXT_SPACING            (107 << 8)
  128. #define GP2_SET_TEXT_MAP                (108 << 8)
  129. #define GP2_LOAD_FONT                   (109 << 8)
  130. #define GP2_SET_TEXT_ATTRIBUTES         (110 << 8)
  131. #define GP2_TEXT_INT_2D                 (111 << 8)
  132. #define GP2_TEXT_FLT_2D                 (112 << 8)
  133. #define GP2_TEXT_INT_3D                 (113 << 8)
  134. #define GP2_TEXT_FLT_3D                 (114 << 8)
  135. #define GP2_SET_TEXT_MAT_NUM            (115 << 8)
  136.  
  137. /* number of gp2 commands defined so far. */
  138. #define GP2_NCMDS            115
  139.  
  140.  
  141. /* Constants for option field of commands */
  142. #define GP1_FREEBLKS        0x80    /* for EOCL */
  143.  
  144. #define GP1_NOHIDDENSURF    0    /* for SET_HIDDENSURF */
  145. #define GP1_ZBHIDDENSURF    1    /* depth buffer polygons */
  146. #define GP1_ZBLINES        2    /* depth buffer lines */
  147. #define GP1_ZBMARKERS        4    /* depth buffer markers */
  148. #define GP1_ZBALL        7    /* depth buffer all primitives */
  149.  
  150. #define GP1_SHADE_CONSTANT    0    /* for XF_POLYGON */
  151. #define GP1_SHADE_GOURAUD    1
  152. #define GP1_SHADE_TEX        2
  153.  
  154. #define GP1_CLIP_PLANE_LEFT    0x20    /* for SET_CLIP_PLANES */
  155. #define GP1_CLIP_PLANE_RIGHT    0x10
  156. #define GP1_CLIP_PLANE_BOTTOM    0x8
  157. #define GP1_CLIP_PLANE_TOP    0x4
  158. #define GP1_CLIP_PLANE_HITHER    0x2
  159. #define GP1_CLIP_PLANE_YON    0x1
  160. #define GP1_CLIP_PLANES_2D    0x3C
  161. #define GP1_CLIP_PLANES_3D    0x3F
  162.  
  163. #define GP1_PICK_OFF        0    /* for SET_PICK and CLEAR_PICK */
  164. #define GP1_PICK_DRAW        1
  165. #define GP1_PICK_NODRAW        2
  166.  
  167. #define GP1_MARKER_LINE        0
  168. #define GP1_MARKER_POLY        1
  169. #define GP1_MARKER_CIRC        2
  170. #define GP1_MARKER_FILL_CIRC    3
  171.  
  172. #define GP1_MARKER_PHIGS_DOT    4
  173. #define GP1_MARKER_PHIGS_1    4
  174. #define GP1_MARKER_PHIGS_PLUS    5
  175. #define GP1_MARKER_PHIGS_2    5
  176. #define GP1_MARKER_PHIGS_STAR    6
  177. #define GP1_MARKER_PHIGS_3    6
  178. #define GP1_MARKER_PHIGS_CIRCLE    7
  179. #define GP1_MARKER_PHIGS_4    7
  180. #define GP1_MARKER_PHIGS_CROSS    8
  181. #define GP1_MARKER_PHIGS_5    8
  182. #define GP1_MARKER_PHIGS(i) (GP1_MARKER_FILL_CIRC + i)
  183.  
  184. #define GP1_DEPTH_CUE_OFF    0    /* for GP1_SET_DEPTH_CUE */
  185. #define GP1_DEPTH_CUE_ON    1
  186.  
  187.  
  188. #define GP2_INDEX_COLOR        0   /* For GP2_XF_PGON_XXX_3D_RGB */
  189. #define GP2_RGB_COLOR_TRIPLE    1   /* and GP1_SET_DEPTH_CUE_COLORS */
  190. #define GP2_RGB_COLOR_PACK      2
  191. #define GP2_VERTEX_NORMALS    4
  192. #define GP2_POLYGON_NORMAL    8
  193.  
  194. /* Light source types or states */
  195.  
  196. #define GP2_LIGHT_AMBIENT       0x00
  197. #define GP2_LIGHT_DIRECTIONAL   0x01
  198. #define GP2_LIGHT_POSITIONAL    0x02
  199.  
  200. #define GP2_FRONT_PROPERTIES    0x00
  201. #define GP2_BACK_PROPERTIES    0x01
  202.  
  203. #define GP2_BACK_FACE_REJ       0x00
  204. #define GP2_BACK_FACE_SHADE     0x01
  205. #define GP2_COPY_PNORM_TO_VNORM 0x02
  206. #define GP2_GENERATE_PNORMAL    0x04
  207. #define GP2_LIGHT_ON        0x08
  208. #define GP2_LIGHT_OFF        0x10
  209. #define GP2_IGNORE_FLAG         0x20
  210.  
  211. #define GP2_IGNORE_VERTEX_COLOR  0x02
  212. #define GP2_IGNORE_VERTEX_NORMAL 0x01
  213. #define GP2_IGNORE_VERTEX_DATA   0x03
  214. #define GP2_IGNORE_LIGHTING      0x04
  215. #define GP2_IGNORE_FRONT_FACE    0x21
  216. #define GP2_IGNORE_BACK_FACE     0x22
  217. #define GP2_IGNORE_ALL_FACES     0x23
  218.  
  219. /* For use with all XF_PGON commands.
  220.  * Forces polygons to use the general polygon fill algorithm. This will slow
  221.  * down some cases, but all polygons will use the same general algorithm that
  222.  * handles all cases.  If 3D polygons are nearly planar, 
  223.  * this should not be needed.
  224.  */
  225. #define GP2_GENERAL_POLYGON  0x80
  226.  
  227. /* Constants for text commands */
  228. #define GP2_TEXT_CLEAR_FONT    0
  229. #define GP2_TEXT_FONT0         0
  230. #define GP2_TEXT_FONT1         1
  231. #define GP2_TEXT_FONT2         2
  232. #define GP2_TEXT_FONT3         3
  233. #define GP2_TEXT_FONT4         4
  234. #define GP2_TEXT_FONT5         5
  235. #define GP2_TEXT_FONT6         6
  236. #define GP2_TEXT_FONT7         7
  237. #define GP2_TEXT_RIGHT         0
  238. #define GP2_TEXT_LEFT          1
  239. #define GP2_TEXT_UP            2
  240. #define GP2_TEXT_DOWN          3
  241. #define GP2_TEXT_STRING        0
  242. #define GP2_TEXT_CHAR          1
  243. #define GP2_TEXT_STROKE        2
  244. #define GP2_TEXT_VECTOR        0
  245. #define GP2_TEXT_FILLED        1
  246. #define GP2_TEXT_SPLINE        2
  247.  
  248. /* Constants for size limits on commands */
  249.  
  250. /* maximum # of 16 bit texture words for PR_PGON_TEX, PR_ROP_TEX* */
  251. #define GP1_MAXPRTEXSHORTS    2048
  252.  
  253. /* limits for PR_LINE, PR_POLYLINE */
  254. #define    GP1_MAX_BRUSH_WIDTH    181  /* sqrt(32767) */
  255. #define    GP1_MAX_PAT_SEGS    16
  256.  
  257. /* Constant to indicate version information is available
  258.    in 3.2FCS and later releases of the pixrect library */
  259. #define GP1_VERSION_QUERY 1
  260.  
  261.  
  262. /* Old command names still available for compatibility */
  263.  
  264. #define GP1_USEFRAME (1 << 8)
  265. #define GP1_PRVEC (2 << 8)
  266. #define GP1_PRROPNF (3 << 8)
  267. #define GP1_PRROPFF (4 << 8)
  268. #define GP1_PRPOLYSOL (5 << 8)
  269. #define GP1_SETZBUF (6 << 8)
  270. #define GP1_SETHIDDENSURF (7 << 8)
  271. #define GP1_SELECTMATRIX (8 << 8)
  272. #define GP1_XFORMPT_2D (9 << 8)
  273. #define GP1_XFORMPT_3D (10 << 8)
  274. #define GP1_XFPOLYGON_3D (11 << 8)
  275. #define GP1_XFPOLYGON_2D (12 << 8)
  276. #define GP1_CORENDCVEC_3D (13 << 8)
  277. #define GP1_CGIVEC (14 << 8)
  278. #define GP1_SETCLPLST (15 << 8)
  279. #define GP1_SETFBINDX (16 << 8)
  280. #define GP1_SETVWP_3D (17 << 8)
  281. #define GP1_SETVWP_2D (18 << 8)
  282. #define GP1_SETROP (19 << 8)
  283. #define GP1_SETCLIPPLANES (20 << 8)
  284. #define GP1_SETPIXPLANES (23 << 8)
  285. #define GP1_SET_MATRIX_3D (24 << 8)
  286. #define GP1_XFVEC_3D (25 << 8)
  287. #define GP1_XFVEC_2D (27 << 8)
  288. #define GP1_SETCOLOR (28 << 8)
  289. #define GP1_SET_MATRIX_2D (29 << 8)
  290. #define GP1_CORENDCPOLY_3D (30 << 8)
  291. #define GP1_MATMUL_2D (32 << 8)
  292. #define GP1_MATMUL_3D (33 << 8)
  293. #define GP1_GETMATRIX_2D (34 << 8)
  294. #define GP1_GETMATRIX_3D (35 << 8)
  295. #define GP1_COREWLDVECNDC_3D (36 << 8)
  296. #define GP1_COREWLDPOLYNDC_3D (37 << 8)
  297. #define GP1_SET_EF_TEX (39 << 8)
  298.  
  299. /*
  300.  * Macros for 32 bit accesses to GP shared memory.
  301.  *
  302.  * "p" is a pointer and "a" is a float or int argument.
  303.  */
  304.  
  305. #ifdef mc68000
  306.  
  307. #define    GP1_PUT_F(p, a)    (* (float *) (p) = (a), \
  308.                 (p) += sizeof (float) / sizeof *(p))
  309. #define    GP1_PUT_I(p, a)    (* (int *) (p) = (a), \
  310.                 (p) += sizeof (int) / sizeof *(p))
  311. #define    GP1_GET_F(p, a)    ((a) = * (float *) (p), \
  312.                 (p) += sizeof (float) / sizeof *(p))
  313. #define    GP1_GET_I(p, a)    ((a) = * (int *) (p), \
  314.                 (p) += sizeof (int) / sizeof *(p))
  315.  
  316. #else  mc68000
  317.  
  318. #define    GP1_PUT_F(p, a)    (((short *) (p))[0] = ((short *)&(a))[0], \
  319.                 ((short *) (p))[1] = ((short *) &(a))[1] , \
  320.                 (p) += sizeof (float) / sizeof *(p))
  321.  
  322. #define    GP1_PUT_I(p, a)    (((short *) (p))[0] = ((short *)&(a))[0], \
  323.                 ((short *) (p))[1] = ((short *) &(a))[1], \
  324.                 (p) += sizeof (int) / sizeof *(p))
  325.  
  326. #define    GP1_GET_F(p, a)    (((short *) &(a))[0] = ((short *)(p))[0], \
  327.                 ((short *) &(a))[1] = ((short *) (p))[1], \
  328.                 (p) += sizeof (float) / sizeof *(p))
  329.  
  330. #define    GP1_GET_I(p, a)    (((short *) &(a))[0] = ((short *)(p))[0], \
  331.                 ((short *) &(a))[1] = ((short *) (p))[1], \
  332.                 (p) += sizeof (int) / sizeof *(p))
  333.  
  334. #endif mc68000
  335.  
  336. #define pw_width(p) (p->pw_clipdata->pwcd_prmulti->pr_size.x)
  337. #define pw_height(p) (p->pw_clipdata->pwcd_prmulti->pr_size.y)
  338. #define pw_offset_X(p) (gp1_d(p->pw_clipdata->pwcd_prmulti)->cgpr_offset.x)
  339. #define pw_offset_Y(p) (gp1_d(p->pw_clipdata->pwcd_prmulti)->cgpr_offset.y)
  340.  
  341. #endif    gp1cmds_DEFINED
  342.